Recently in a file sharing system, a system that enables a client at a remote place to download or upload a file from or to a server has been known. Thus, there is a need for a method for increasing the processing speed needed from a data request to the data acquisition between a client and a server.
As file sharing protocols used for file sharing, Common Internet File System (CIFS)/Server Message Block (SMB) and the like are used. In the case of CIFS, a large number of negotiations for communication messages between a server and a client is needed, and the processing time needed for negotiations is increased as the communication distance between the server and the client is longer. As a result, the processing speed from a data request to the data acquisition corresponding to the data request for file sharing between the server and the client decreases.
Thus, in order to handle such a situation, a high-speed transmission system that increases the processing speed from a data request to the data acquisition is known. FIG. 7 is a sequence diagram illustrating an example of processing operation of a high-speed transmission system 200 performing a relay process. The high-speed transmission system 200 illustrated in FIG. 7 includes a server 201, a server-side relay device 202, a client-side relay device 203, and a client 204.
The client 204 transmits an information acquisition command (GetInfo) to the client-side relay device 203 (step S201). The client-side relay device 203 transmits the received information acquisition command to the server-side relay device 202 (step S202). The server-side relay device 202 transmits the received information acquisition command to the server 201 (step S203).
The server 201 transmits an information acquisition response corresponding to the received information acquisition command to the server-side relay device 202 (step S204). The server-side relay device 202 transmits the received information acquisition response to the client-side relay device 203 (step S205). The client-side relay device 203 transmits the received information acquisition response to the client 204 (step S206).
The client 204 transmits a read command (read 0-99) to the client-side relay device 203 in response to the information acquisition response (step S207). When receiving the read command (read 0-99), the client-side relay device 203 transmits the read command (read 0-99) to the server-side relay device 202 (step S208). When receiving the read command (read 0-99), the server-side relay device 202 transmits the read command (read 0-99) to the server 201 (step S209).
The server 201 reads data (data 0-99) in response to the read command (read 0-99) and transmits the read data (data 0-99) to the server-side relay device 202 (step S210). The server-side relay device 202 transmits the data (data 0-99) to the client-side relay device 203 (step S211). The client-side relay device 203 transmits the data (data 0-99) to the client 204 (step S212).
When transmitting the data (data 0-99) to the client-side relay device 203 in step S211, the server-side relay device 202 transmits a prefetch command (read 100-199) to the server 201 (step S213). The server 201 reads data (data 100-199) in response to the prefetch command (read 100-199) and transmits the read data (data 100-199) to the server-side relay device 202 (step S214). The server-side relay device 202 transmits the data (data 100-199) to the client-side relay device 203 (step S215).
When transmitting the data (data 100-199) to the client-side relay device 203 in step S215, the server-side relay device 202 transmits a prefetch command (read 200-299) to the server 201 (step S216). The server 201 reads data (data 200-299) in response to the prefetch command (read 200-299) and transmits the read data (data 200-299) to the server-side relay device 202 (step S217). The server-side relay device 202 transmits the data (data 200-299) to the client-side relay device 203 (step S218).
When transmitting the data (data 200-299) to the client-side relay device 203 in step S218, the server-side relay device 202 transmits a prefetch command (read 300-399) to the server 201 (step S219). The server 201 reads data (data 300-399) in response to the prefetch command (read 300-399) and transmits the read data (data 300-399) to the server-side relay device 202 (step S220). The server-side relay device 202 transmits the data (data 300-399) to the client-side relay device 203 (step S221).
When transmitting the data (data 300-399) to the client-side relay device 203 in step S221, the server-side relay device 202 transmits a prefetch command (read 400-499) to the server 201 (step S222). The server 201 reads data (data 400-499) in response to the prefetch command (read 400-499) and transmits the read data (data 400-499) to the server-side relay device 202 (step S223). The server-side relay device 202 transmits the data (data 400-499) to the client-side relay device 203 (step S224).
When receiving the data (data 0-99) in step S212, the client 204 transmits a read command (read 100-199) to the client-side relay device 203 (step S225). In response to the read command (read 100-199), the client-side relay device 203 transmits the data (data 100-199) received in step S215 to the client 204 as a proxy response (step S226).
When receiving the data (data 100-199) in step S226, the client 204 transmits a read command (read 200-299) to the client-side relay device 203 (step S227). In response to the read command (read 200-299), the client-side relay device 203 transmits the received data (data 200-299) to the client 204 as a proxy response (step S228).
When receiving the data (data 200-299) in step S228, the client 204 transmits a read command (read 300-399) to the client-side relay device 203 (step S229). In response to the read command (read 300-399), the client-side relay device 203 transmits the received data (data 300-399) to the client 204 as a proxy response (step S230).
When receiving the data (data 300-399) in step S230, the client transmits a read command (read 400-499) to the client-side relay device 203 (step S231). In response to the read command (read 400-499), the client-side relay device 203 transmits the received data (data 400-499) to the client 204 as a proxy response (step S232). The client 204 repeats the series of processes until the acquisition of desired data from the server 201 is completed.
The server-side relay device 202 requests the server 201 to execute a prefetch command in response to a read command from the client 204, and transmits the data acquired by the prefetch command to the client-side relay device 203. The client-side relay device 203 sequentially transmits data acquired by prefetch commands to the client 204 in response to read commands from the client 204. As a result, it is possible to increase the processing speed needed from a data request to the data acquisition.
FIG. 8 is a sequence diagram illustrating an example of processing operation of a high-speed transmission system 300 performing a relay process. The high-speed transmission system 300 illustrated in FIG. 8 includes a server 301, a server-side relay device 302, a client-side relay device 303, and a client 304.
The client 304 transmits a first read command (read 0-99) to the client-side relay device 303 (step S301). The client-side relay device 303 transmits the received read command (read 0-99) to the server-side relay device 302 (step S302). The server-side relay device 302 transmits the received read command (read 0-99) to the server 301 (step S303). The server 301 reads data (data 0-99) in response to the read command (read 0-99) and transmits the read data (data 0-99) to the server-side relay device 302 (step S304). The server-side relay device 302 transmits the data (data 0-99) to the client-side relay device 303 (step S305). The client-side relay device 303 caches the received data (data 0-99) in a cache (step S306), and transmits the cached data (data 0-99) to the client 304 (step S307).
The client 304 transmits a second read command (read 0-99) to the client-side relay device 303 (step S308). When receiving the read command (read 0-99), the client-side relay device 303 transmits the data (data 0-99) cached in the cache to the client 304 (step S309).
When detecting the second and subsequent read commands from the client 304, the client-side relay device 303 transmits the data cached in the cache to the client 304 without transferring the read command to the server 301. As a result, it is possible to increase the processing speed needed from a data request to the data acquisition.
Patent Literature 1: International Publication Pamphlet No. WO 2012/042617
Patent Literature 2: Japanese Laid-open Patent Publication No. 2001-318902
Patent Literature 3: Japanese Laid-open Patent Publication No. 2013-218505
Patent Literature 4: Japanese Laid-open Patent Publication No. 2006-252019
However, in the high-speed transmission system 200 illustrated in FIG. 7, there is no prefetched data in the period from the start of the transmission of a read command of the client 204 in step S207 to the acquisition of the read data corresponding to the read command in step S212. In other words, the client-side relay device 203 is in a standby state for a period until prefetched data is acquired from the server-side relay device 202 in step S212. As a result, the processing speed needed from a data request to the data acquisition is not increased.
In the client-side relay device 303 in the high-speed transmission system 300 illustrated in FIG. 8, the read data is stored in the cache in response to the first data request (read command), and the cached data is transmitted to the client 304 for the second and subsequent data requests. However, the client-side relay device 303 operates based on the assumption that the data in the cache to be downloaded for the first data request is the same as that for the second data request, and a mechanism for determining whether the cache is updated is needed.